mtx_mult Interface

public interface mtx_mult

An interface to the matrix multiplication routines.


Module Procedures

private subroutine mtx_mult_mtx(transa, transb, alpha, a, b, beta, c, err)

Performs the matrix operation .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: transa

A logical flag indicating if the matrix should be transposed.

logical, intent(in) :: transb

A logical flag indicating if the matrix should be transposed.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:,:) :: a

The matrix in the operation.

real(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

real(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

real(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine mtx_mult_vec(trans, alpha, a, b, beta, c, err)

Performs the matrix-vector operation .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

A logical flag indicating if the matrix should be transposed.

real(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

real(kind=real64), intent(in), dimension(:,:) :: a

The matrix in the operation.

real(kind=real64), intent(in), dimension(:) :: b

The vector in the operation.

real(kind=real64), intent(in) :: beta

The scalar to multiply the vector .

real(kind=real64), intent(inout), dimension(:) :: c

The vector in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine cmtx_mult_mtx(opa, opb, alpha, a, b, beta, c, err)

Performs the matrix operation .

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: opa

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

integer(kind=int32), intent(in) :: opb

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:,:) :: a

The matrix in the operation.

complex(kind=real64), intent(in), dimension(:,:) :: b

The matrix in the operation.

complex(kind=real64), intent(in) :: beta

The scalar to multiply the matrix .

complex(kind=real64), intent(inout), dimension(:,:) :: c

The matrix in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.

private subroutine cmtx_mult_vec(opa, alpha, a, b, beta, c, err)

Performs the matrix-vector operation .

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: opa

An integer flag indicating the operation to perform on matrix . Possible options are:

  • LA_NO_OPERATION: No operation is performed on matrix.

  • LA_TRANSPOSE: The transpose of matrix is used.

  • LA_HERMITIAN_TRANSPOSE: The Hermitian transpose of matrix is used.

complex(kind=real64), intent(in) :: alpha

The scalar to multiply the product of and .

complex(kind=real64), intent(in), dimension(:,:) :: a

The matrix in the operation.

complex(kind=real64), intent(in), dimension(:) :: b

The vector in the operation.

complex(kind=real64), intent(in) :: beta

The scalar to multiply the vector .

complex(kind=real64), intent(inout), dimension(:) :: c

The vector in the operation.

class(errors), intent(inout), optional, target :: err

An error object to report any errors that occur.